const readlineSync = require('readline-sync');
function menu(){
    console.log(`1. 添加学生\n`+
    `2. 生成成绩单\n`+
    `3. 退出\n` +
    `请输入你的选择（1～3）：`);
}
function one(){
    console.log(`请输入学生信息（格式：姓名, 学号, 民族, 班级, 学科: 成绩, ...），按回车提交：`);
    let student=readlineSync.question('');
    let arr=[];
    let object={};
    let pattern=/([\u4e00-\u9fa5]{1,4}),([0-9]{10}),([\u4e00-\u9fa5]),((\d){1,10}),([\u4e00-\u9fa5]{1,10}):([0-9]{1,3}),([\u4e00-\u9fa5]{1,10}):([0-9]{1,3}),([\u4e00-\u9fa5]{1,10}):([0-9]{1,3}),([\u4e00-\u9fa5]{1,10}):([0-9]{1,3})/;
    if(!pattern.test(student)){
        console.log(`请按正确的格式输入（格式：姓名, 学号, 学科: 成绩, ...）`);
        student=readlineSync.question('');
    }
    else{
        arr=student.split(",");
        object[arr[1]]={};
        object[arr[1]].name=arr[0];
        object[arr[1]].id=arr[1];
        object[arr[1]].nation=arr[2];
        object[arr[1]].class=arr[3];
        let arr2=[];
        let all=0;
        let object1={};
        for(let i=4;i<arr.length;i++){
            arr1=arr[i].split(':');
            object1[arr[1]]={};
            object1[arr[1]].num=arr1[1];
            object1[arr[1]].major=arr1[0];
            all+=arr1[1];
        }
        for(let i in object1){
            arr2.push(object1[i]);
        }
        object[arr[1]].sorces=arr2;
        object[arr[1]].sum=all;
        object[arr[1]].average=all/4;
    }
    return object;
}
function two(array){
    console.log(`请输入要打印的学生的学号（格式： 学号, 学号,...），按回车提交：`);
    let id=readlineSync.question('');
    let pattern=/([0-9]{10})/;
    let arr=[];
    if(!pattern.test(id)){
        console.log(`请按正确的格式输入要打印的学生的学号（格式： 学号, 学号,...）`);
        id=readlineSync.question('');
    }
    else{
        arr=id.split(",");
        let ALL=0,arr3=[];
        let result=`成绩单\n`+
        `姓名|数学|语文|英语|编程|平均分|总分\n`+ 
        `========================\n`;
        for(let i of arr){
            for(let j of array){
                if(i==j.id){
                    result+=j.name+`|`+j.sorces[0].num+`|`+j.sorces[1].num+`|`+j.sorces[2].num+`|`+j.sorces[3].num+`|`+j.average+`|`+j.sum+`\n`;
                }
                ALL+=j.sum
                arr3.push(j.average);
            }
        }
        result+=`========================\n`;
        let allaverage=ALL/arr.length;
        arr3.sort((a,b)=>b-a);
        let middle;
        if(arr3.length%2==0){
           middle=((arr3[arr3.length/2]+arr3[arr3.length/2-1])/2);
        }
        else{
           middle=(arr3[parseInt(arr3.length/2)]);
        }
        result+=`全班总分平均数：`+allaverage+`\n`+
        `全班总分中位数：`+middle;
    }
    return result;
}
function main(){
    menu();
    let array=[];
    for(let i=0;;){
        let choice= readlineSync.question('');
        if(choice==1){
            let one1=one();
            array.push(one1);
            console.log(`学生`+one1.name+`的成绩被添加`);
            menu();
        }
        else if(choice==2){
            let two1=two(array);
            console.log(two1);
            menu();
        }
        else if(choice==3){
            break;
        }
        else {
            console.log('输入错误，请重新输入');
            menu();
        }
    }
}
exports.menu=menu;
exports.one=one;
exports.two=two;
exports.main=main;